﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Sindhorb
{
    public class Boleto
    {
        public decimal VlTotal { get; set; }
        public decimal VlMulta { get; set; }
        public decimal VlJuros { get; set; }
        public decimal VlCorrecao { get; set; }
        public string NossoNumero { get; set; }
        public string LinhaDigitavel { get; set; }
        public int SequencialNossoNumero { get; set; }
        public DateTime DataVencimento { get; set; }
        public byte NuParcela { get; set; }
        public decimal VlParcela { get; set; }

        public Guid GerarGuias(DadosEmpresasDTO objDadosEmpresa,
            IEstrategiaEncargos objEstrategiaEncargos,
            IEstrategiaCorrecao objCorrecao,
            IEstrategiaAbatimentoDesconto objAbatimentoDesconto,
            IEstrategiaCalculadorValorBoleto objCalculadorValor,
            IEstrategiaCalculadorVencimentoBoleto objCalculadorVencimento,
            IEstrategiaLinhaDigitavel objLinhaDigitavel            
            )
        {
            try
            {
                 
                this.SequencialNossoNumero = this.RecuperarUltimoSequencial() + 1;
                this.VlTotal = this.CalcularValor(objDadosEmpresa);

                //DateTime dtVencimentoBoleto = objCalculadorVencimento.CalcularDtVencimento();

                //if (objDadosEmpresa.CalcularEncargos == true)
                //{
                //    Encargos objEncargos = objEstrategiaEncargos.CalcularEncargos(this.VlTotal, objCorrecao);
                //    this.VlMulta = objEncargos.VlMulta;
                //    this.VlJuros = objEncargos.VlJuros;
                //    this.VlCorrecao = objEncargos.VlCorrecao;
                //}

                //this.NossoNumero = this.CalcularNossoNumero();
                //this.LinhaDigitavel = this.MontarLinhaDigitavel();

                throw new NotImplementedException();
            }
            catch (Exception)
            {
                throw;
            }
        }

        public int RecuperarUltimoSequencial()
        {
            throw new ApplicationException();
        }

        public string MontarLinhaDigitavel()
        {
            throw new NotImplementedException();
        }

        public string CalcularNossoNumero()
        {
            throw new NotImplementedException();
        }

        public decimal CalcularValor(DadosEmpresasDTO objDadosEmpresa)
        {
            throw new NotImplementedException();
        }
    }
}
